home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #6 / Amiga Plus CD - 2004 - No. 06.iso / AmiSoft / Util / libs / ExtraLib.lha / Extra / include / rhosigma / settings.i < prev   
Text File  |  2004-05-30  |  9KB  |  387 lines

  1. ; ___________________________________________________________________________
  2. ; |*************************************************************************|
  3. ; |*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|
  4. ; |*| Set TAB to 15 for best readable file layout. |*| HiSoft DevPac 3.04 |*|
  5. ; |*|______________________________________________|*|____________________|*|
  6. ; |*************************************************************************|
  7. ; |*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|
  8. ; |*|               |*|  $Id: settings.i (18.04.03)                       |*|
  9. ; |*| ###### ###### |*|  RhoSigma Source based on NDK 3.1 Includes 40.15  |*|
  10. ; |*| ##  ## ##   # |*| _________________________________________________ |*|
  11. ; |*| ##  ##  ##    |*|                                                   |*|
  12. ; |*| ######   ##   |*|  Useful defines and extensions for NDK includes   |*|
  13. ; |*| ##      ##    |*|                                                   |*|
  14. ; |*| ##     ##   # |*| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |*|
  15. ; |*| ##     ###### |*|  Copyright © 1998-2003 RhoSigma, Roland Heyder    |*|
  16. ; |*|               |*|  All Rights Reserved.                             |*|
  17. ; |*|_______________|*|___________________________________________________|*|
  18. ; |*************************************************************************|
  19. ; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  20.  
  21.     IFND    RHOSIGMA_SETTINGS_I
  22. RHOSIGMA_SETTINGS_I    SET    1
  23.  
  24.     IFND    EXEC_MEMORY_I
  25.      INCLUDE    exec/memory.i
  26.     ENDC
  27.  
  28.     ;** enhanced booleans **
  29.  
  30. UPPER    EQU     1     ; Signum- und Wahrheitswerte zur
  31. EQUAL    EQU     0     ; Verwendung in Variablen des
  32. LOWER    EQU    -1     ; Typs BOOL
  33. FALSE    =    EQUAL
  34. TRUE    =    UPPER
  35.  
  36.     ;** useful memory constants **
  37.  
  38. MOVE16_BLOCKSIZE   EQU    16          ; zur Ausrichtung von Speicher
  39. MOVE16_BLOCKMASK   EQU    (MOVE16_BLOCKSIZE-1) ; für MOVE16-Befehl (MC68040)
  40.  
  41.     ;** more types **
  42.  
  43. SINGLE    MACRO    ;(Label/A)          ; Fließkomma-Typen
  44. \1    =    SOFFSET          ; DOUBLE bereits in types.i
  45. SOFFSET    SET    SOFFSET+4          ; definiert
  46.     ENDM
  47.  
  48. EXTEND    MACRO    ;(Label/A)
  49. \1    =    SOFFSET
  50. SOFFSET    SET    SOFFSET+12
  51.     ENDM
  52.  
  53. PACKED    MACRO    ;(Label/A)
  54. \1    =    SOFFSET
  55. SOFFSET    SET    SOFFSET+12
  56.     ENDM
  57.  
  58. CHARS    MACRO    ;(Label/A,Length/A/N) ; für String-Einbindungen
  59. \1    =    SOFFSET           ; bzw. Puffer in Strukturen
  60. SOFFSET    SET    SOFFSET+\2
  61.     ENDM
  62.  
  63.     ;** UNION-Types **
  64.  
  65.     IFND    USIZE    ; wichtig um Assembler-Fehler
  66. USIZE     SET    0    ; zu verhindern
  67.     ENDC
  68.  
  69. ; ACHTUNG !! - Jeweils beim letzten Element einer UNION muß das Schlüsselwort
  70. ;    »END« angeben werden, damit der SOFFSET-Wert richtig erhöht wird.
  71.  
  72. UNIBOOL    MACRO    ;(Label/A, END/K/S)
  73. \1    =    SOFFSET
  74.     IFLT    USIZE-2
  75. USIZE     SET    2
  76.     ENDC
  77.     IFC    '\2','END'
  78. SOFFSET     SET    SOFFSET+USIZE
  79. USIZE     SET    0
  80.     ENDC
  81.     ENDM
  82.  
  83. UNIBYTE    MACRO    ;(Label/A, END/K/S)
  84. \1    =    SOFFSET
  85.     IFLT    USIZE-1
  86. USIZE     SET    1
  87.     ENDC
  88.     IFC    '\2','END'
  89. SOFFSET     SET    SOFFSET+USIZE
  90. USIZE     SET    0
  91.     ENDC
  92.     ENDM
  93.  
  94. UNIUBYTE    MACRO    ;(Label/A, END/K/S)
  95. \1    =    SOFFSET
  96.     IFLT    USIZE-1
  97. USIZE     SET    1
  98.     ENDC
  99.     IFC    '\2','END'
  100. SOFFSET     SET    SOFFSET+USIZE
  101. USIZE     SET    0
  102.     ENDC
  103.     ENDM
  104.  
  105. UNIWORD    MACRO    ;(Label/A, END/K/S)
  106. \1    =    SOFFSET
  107.     IFLT    USIZE-2
  108. USIZE     SET    2
  109.     ENDC
  110.     IFC    '\2','END'
  111. SOFFSET     SET    SOFFSET+USIZE
  112. USIZE     SET    0
  113.     ENDC
  114.     ENDM
  115.  
  116. UNIUWORD    MACRO    ;(Label/A, END/K/S)
  117. \1    =    SOFFSET
  118.     IFLT    USIZE-2
  119. USIZE     SET    2
  120.     ENDC
  121.     IFC    '\2','END'
  122. SOFFSET     SET    SOFFSET+USIZE
  123. USIZE     SET    0
  124.     ENDC
  125.     ENDM
  126.  
  127. UNISHORT    MACRO    ;(Label/A, END/K/S)
  128. \1    =    SOFFSET
  129.     IFLT    USIZE-2
  130. USIZE     SET    2
  131.     ENDC
  132.     IFC    '\2','END'
  133. SOFFSET     SET    SOFFSET+USIZE
  134. USIZE     SET    0
  135.     ENDC
  136.     ENDM
  137.  
  138. UNIUSHORT    MACRO    ;(Label/A, END/K/S)
  139. \1    =    SOFFSET
  140.     IFLT    USIZE-2
  141. USIZE     SET    2
  142.     ENDC
  143.     IFC    '\2','END'
  144. SOFFSET     SET    SOFFSET+USIZE
  145. USIZE     SET    0
  146.     ENDC
  147.     ENDM
  148.  
  149. UNILONG    MACRO    ;(Label/A, END/K/S)
  150. \1    =    SOFFSET
  151.     IFLT    USIZE-4
  152. USIZE     SET    4
  153.     ENDC
  154.     IFC    '\2','END'
  155. SOFFSET     SET    SOFFSET+USIZE
  156. USIZE     SET    0
  157.     ENDC
  158.     ENDM
  159.  
  160. UNIULONG    MACRO    ;(Label/A, END/K/S)
  161. \1    =    SOFFSET
  162.     IFLT    USIZE-4
  163. USIZE     SET    4
  164.     ENDC
  165.     IFC    '\2','END'
  166. SOFFSET     SET    SOFFSET+USIZE
  167. USIZE     SET    0
  168.     ENDC
  169.     ENDM
  170.  
  171. UNIFLOAT    MACRO    ;(Label/A, END/K/S)
  172. \1    =    SOFFSET
  173.     IFLT    USIZE-4
  174. USIZE     SET    4
  175.     ENDC
  176.     IFC    '\2','END'
  177. SOFFSET     SET    SOFFSET+USIZE
  178. USIZE     SET    0
  179.     ENDC
  180.     ENDM
  181.  
  182. UNISINGLE    MACRO    ;(Label/A, END/K/S)
  183. \1    =    SOFFSET
  184.     IFLT    USIZE-4
  185. USIZE     SET    4
  186.     ENDC
  187.     IFC    '\2','END'
  188. SOFFSET     SET    SOFFSET+USIZE
  189. USIZE     SET    0
  190.     ENDC
  191.     ENDM
  192.  
  193. UNIDOUBLE    MACRO    ;(Label/A, END/K/S)
  194. \1    =    SOFFSET
  195.     IFLT    USIZE-8
  196. USIZE     SET    8
  197.     ENDC
  198.     IFC    '\2','END'
  199. SOFFSET     SET    SOFFSET+USIZE
  200. USIZE     SET    0
  201.     ENDC
  202.     ENDM
  203.  
  204. UNIEXTEND    MACRO    ;(Label/A, END/K/S)
  205. \1    =    SOFFSET
  206.     IFLT    USIZE-12
  207. USIZE     SET    12
  208.     ENDC
  209.     IFC    '\2','END'
  210. SOFFSET     SET    SOFFSET+USIZE
  211. USIZE     SET    0
  212.     ENDC
  213.     ENDM
  214.  
  215. UNIPACKED    MACRO    ;(Label/A, END/K/S)
  216. \1    =    SOFFSET
  217.     IFLT    USIZE-12
  218. USIZE     SET    12
  219.     ENDC
  220.     IFC    '\2','END'
  221. SOFFSET     SET    SOFFSET+USIZE
  222. USIZE     SET    0
  223.     ENDC
  224.     ENDM
  225.  
  226. UNIAPTR    MACRO    ;(Label/A, END/K/S)
  227. \1    =    SOFFSET
  228.     IFLT    USIZE-4
  229. USIZE     SET    4
  230.     ENDC
  231.     IFC    '\2','END'
  232. SOFFSET     SET    SOFFSET+USIZE
  233. USIZE     SET    0
  234.     ENDC
  235.     ENDM
  236.  
  237. UNICPTR    MACRO    ;(Label/A, END/K/S)
  238. \1    =    SOFFSET
  239.     IFLT    USIZE-4
  240. USIZE     SET    4
  241.     ENDC
  242.     IFC    '\2','END'
  243. SOFFSET     SET    SOFFSET+USIZE
  244. USIZE     SET    0
  245.     ENDC
  246.     ENDM
  247.  
  248. UNIFPTR    MACRO    ;(Label/A, END/K/S)
  249. \1    =    SOFFSET
  250.     IFLT    USIZE-4
  251. USIZE     SET    4
  252.     ENDC
  253.     IFC    '\2','END'
  254. SOFFSET     SET    SOFFSET+USIZE
  255. USIZE     SET    0
  256.     ENDC
  257.     ENDM
  258.  
  259. UNIRPTR    MACRO    ;(Label/A, END/K/S)
  260. \1    =    SOFFSET
  261.     IFLT    USIZE-2
  262. USIZE     SET    2
  263.     ENDC
  264.     IFC    '\2','END'
  265. SOFFSET     SET    SOFFSET+USIZE
  266. USIZE     SET    0
  267.     ENDC
  268.     ENDM
  269.  
  270. UNISTRUCT    MACRO    ;(Label/A, Length/A/N, END/K/S)
  271. \1    =    SOFFSET
  272.     IFLT    USIZE-(\2)
  273. USIZE     SET    (\2)
  274.     ENDC
  275.     IFC    '\3','END'
  276. SOFFSET     SET    SOFFSET+USIZE
  277. USIZE     SET    0
  278.     ENDC
  279.     ENDM
  280.  
  281. UNICHARS    MACRO    ;(Label/A, Length/A/N, END/K/S)
  282. \1    =    SOFFSET
  283.     IFLT    USIZE-(\2)
  284. USIZE     SET    (\2)
  285.     ENDC
  286.     IFC    '\3','END'
  287. SOFFSET     SET    SOFFSET+USIZE
  288. USIZE     SET    0
  289.     ENDC
  290.     ENDM
  291.  
  292.     ;** offset alignments **
  293.  
  294. ALIGNFLOAT    MACRO    ;Offset für nächsten Fließkomma-Typen setzen
  295. SOFFSET    SET    (SOFFSET+1)&$fffffffe
  296.     ENDM
  297.  
  298. ALIGNQUADWORD    MACRO    ;Offset auf nächstes QuadWord setzen (8 Bytes)
  299. SOFFSET    SET    (SOFFSET+7)&$fffffff8
  300.     ENDM
  301.  
  302. ALIGNMEMBLOCK    MACRO    ;Offset auf nächstes Vielfaches von MEM_BLOCKSIZE
  303. SOFFSET    SET    (SOFFSET+MEM_BLOCKMASK)&(~MEM_BLOCKMASK)
  304.     ENDM
  305.  
  306. ALIGNMOVE16    MACRO    ;Offset auf nächstes Vielfaches für MOVE16 (MC68040)
  307. SOFFSET    SET    (SOFFSET+MOVE16_BLOCKMASK)&(~MOVE16_BLOCKMASK)
  308.     ENDM
  309.  
  310.     ;** for DisplayAlert() **
  311.  
  312. DATPOS_C    EQU    -1    ; Text zentrieren
  313. DATPOS_L    EQU    -2    ; Text linksbündig
  314. DATPOS_R    EQU    -3    ; Text rechtsbündig
  315.  
  316. ;*** rhosigma / DATEXT() ***
  317. ;============================================================================
  318. ; Dieses Macro erstellt einen Teilstring des Parameterstrings der Intuition-
  319. ; Funktion »DisplayAlert()«. Wahlweise kann der Text automatisch zentriert,
  320. ; oder links- bzw. rechsbündig ausgerichtet werden.
  321. ;----------------------------------------------------------------------------
  322. ; Definiert:    settings.i  (Copyright © 1998-2003 RhoSigma, Roland Heyder)
  323. ;
  324. ; Schablone:    xPos/A/N, yPos/A/N, Text/A, END/K/S
  325. ;
  326. ; Parameter:    xPos  --> x-Position des Textes,
  327. ;        oder einer der oben definierten DATPOS-Werte
  328. ;
  329. ;    yPos  --> y-Position des Textes,
  330. ;        Ausrichtung nach BaseLine des Fonts (topaz/8)
  331. ;
  332. ;    Text  --> der auszugebende Text selbst,
  333. ;        in <..>, wenn Leerzeichen enthalten sind
  334. ;
  335. ;    END   --> Wird dieses Schlüsselwort angegeben, dann endet der
  336. ;              Parameterstring an dieser Stelle, anderenfalls muß
  337. ;              ein weiterer Teilstring (Macro-Aufruf) folgen.
  338. ;
  339. ; Bemerkung:    Ein Beispiel für die Benutzung dieses Macros finden Sie in der
  340. ;    Datei »demo/AlertDemo.ASM«.
  341. ;============================================================================
  342.  
  343. DATEXT    MACRO    ;(xPos/A/N, yPos/A/N, Text/A, END/K/S)
  344.     ;----------------------------------------------------
  345.     IFEQ    \1+(-DATPOS_C)
  346.      dc.w    DAz\@    ; X-Pos berechnet (zentriert)
  347.     ELSEIF
  348.      IFEQ    \1+(-DATPOS_L)
  349.       dc.w    12    ; X-Pos (linksbündig)
  350.      ELSEIF
  351.       IFEQ    \1+(-DATPOS_R)
  352.        dc.w    DAr\@    ; X-Pos berechnet (rechtsbündig)
  353.       ELSEIF
  354.        dc.w    \1    ; angegebene absolute X-Pos
  355.       ENDC
  356.      ENDC
  357.     ENDC
  358.     ; Mit »dc.w« wird hier sichergestellt, daß der ParamString auf
  359.     ; einer geraden Adresse beginnt (wichtig für OS 1.3 und früher).
  360.     ; Eine ungerade Zeichenanzahl des Teilstrings sorgt außerdem da-
  361.     ; für, daß wir mit allen Koordinaten u. anderen Bytes zusammen
  362.     ; letztlich auch wieder auf einer geraden Adresse ankommen, für
  363.     ; die X-Pos des nächsten Teilstrings. Sollte der Text eine ge-
  364.     ; rade Anzahl Zeichen haben, wird einfach ein Leerz. angehängt.
  365.  
  366.     dc.b    \2        ; Y-Pos
  367. DAs\@    dc.b    "\3"        ; Text ohne 0-Byte
  368. DAe\@
  369. DAl\@    =    (DAe\@-DAs\@)        ; Länge der Zeichenkette
  370.  
  371. DAz\@    =    (640-(DAl\@*8))/2  ; X-Pos für Zentrierung
  372. DAr\@    =    (640-(DAl\@*8))-12 ; X-Pos für rechtsbündig
  373.  
  374.     IFEQ    (DAl\@&1)        ; wenn gerade Zeichenanzahl
  375.      dc.b    " "        ; dann ein Leerz. anhängen
  376.     ENDC            ; (wegen OS 1.3 u. früher)
  377.  
  378.     IFNC    '\4','END'
  379.      dc.b    0,1        ; Text-0-Byte u. Continue
  380.     ELSEIF
  381.      dc.b    0,0        ; Text-0-Byte u. ParamEnde
  382.     ENDC
  383.     ;----------------------------------------------------
  384.     ENDM    ;DATEXT
  385.  
  386.     ENDC    ;settings.i
  387.